package study.core.rdd.operator

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * 转换算子之filter操作
 * 将数据根据指定的规则进行筛选过滤，符合规则的数据保留，不符合规则的数据丢弃。
 * 当数据进行筛选过滤后，分区不变，但是分区内的数据可能不均衡，生产环境下，可能会出
 * 现数据倾斜
 *
 * @author zh
 * @date 2021/5/15 10:47
 */
object TestFilter {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("rddMap")
    val context = new SparkContext(sparkConf)

    // 准备集合
    val list = List(1, 2, 3, 4)
    // 创建RDD
    val rdd: RDD[Int] = context.makeRDD(list, 2)

    // 根据函数来筛选
    val result = rdd.filter((num: Int) => num % 2 == 0)

    result.collect().foreach(println)

    context.stop()

    //2
    //4

  }

}
